The execution of an initial set of operations that a computer system performs when the computer system is powered on is known as “booting” and the environment may be referred to as a “bootloader environment.” The boot process begins when a computer that has been turned off is turned on again, and ends when the computer is ready to perform its normal operations, typically when system software (e.g., operating system, virtualization software known as a hypervisor, etc.) has been loaded. The sequence of instructions that are executed during this boot process is referred to as a “boot sequence.” It should be also recognized that the boot process may begin pursuant to a software reset where power is not interrupted, and may involve streaming in an image of the system software through a network connection, such as in network booting (e.g., preboot execution environment (PXE)). Furthermore, the boot process may include more abbreviated forms of booting, such as resume from hibernation. Thus, as used herein, the term “bootloader environment” should be interpreted broadly to include any low level process (outside of the operating system itself) pursuant to which system software is loaded into memory and is inclusive of hypervisor and operating system kernel environments, firmware such as basic input/output system (BIOS), and bootloaders.
Testing low level system components, particularly those that are only used in a bootloader environment, can be cumbersome. Boot loaders and other intermediate programs, for example, are only resident in memory for a brief time and will not be available after a successful boot up, when it would be natural for the system to be tested. Instead, the act of booting up itself acts as a test. If the system boots up successfully, the intermediate components may be considered to have done their job.